/**
  ******************************************************************************
  * @file    debug.h
  * @author  Firmware Worker
  * @brief   Header for debug
  *
  * \license The MIT License (MIT)
  * 
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
  * in the Software without restriction, including without limitation the rights
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  * copies of the Software, and to permit persons to whom the Software is
  * furnished to do so, subject to the following conditions:
  * 
  * The above copyright notice and this permission notice shall be included in
  * all copies or substantial portions of the Software.
  * 
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  ******************************************************************************
  */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __DEBUG_H
#define __DEBUG_H

/* Includes ------------------------------------------------------------------*/
#include "printf.h"

/* Exported types ------------------------------------------------------------*/
/* Exported constants --------------------------------------------------------*/
/* Exported macro ------------------------------------------------------------*/
#define DEBUG_LEVEL      3

#if DEBUG_LEVEL >= 1
#define DEBUG_ERROR(...)  do {                    \
  printf("ERROR: %s, %d, ", __func__, __LINE__);  \
  printf(__VA_ARGS__);                            \
} while(0)
#endif

#if DEBUG_LEVEL >= 2
#define DEBUG_WARN(...)  do {                    \
  printf("WARN: %s, %d, ", __func__, __LINE__);  \
  printf(__VA_ARGS__);                           \
} while(0)
#endif

#if DEBUG_LEVEL >= 3
#define DEBUG_INFO(...)  do {                    \
  printf("INFO: %s, %d, ", __func__, __LINE__);  \
  printf(__VA_ARGS__);                           \
} while(0)
#endif

/* Exported variables --------------------------------------------------------*/
/* Exported functions ------------------------------------------------------- */
void Error_Handler(void);

#endif /* __DEBUG_H */
